import $format from '../format'
import $http from '../http'
import $store from '@/store'

/**
 * 返回相关工具函数，及vuex对象
 * $http - axios封装
 * $format - format工具函数封装
 * get:object - vuex user相关信息
 * set:object<Function>  - user设置信息
 * @returns - $http, $format, get, set
 */

export default function () {

   /**
   * @type {{
   *  user: {}, 
   *  form:{
   *    cookie: false,
   *    username: "",
   *    password: "",
   *  }
   *  token: "",
   * }}
   */
  let get = $store.state.user

  let set = {
    /**
     * 储存user信息
     * @param {object} data - 用户相关信息
     * @returns 
     */
    user(data) {
      return $store.commit("user/setUser", data)
    },
    /**
     * 账号信息
     * @param {object} data - 用户登录信息 
     * { cookie: false,username: "",password: "",}
     * @returns
     */
    form(data) {
      return $store.commit("user/setForm", data)
    },
    /**
     * 储存token
     * @param {String} data - token信息 
     * @returns 
     */
    token(data) {
      return $store.commit("user/setToken", data)
    }
  }

  return {
    $http,
    $format,
    get,
    set
  }
}